package com.yang.mall.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yang.mall.dto.CreateProductDTO;
import com.yang.mall.dto.ProductDTO;
import com.yang.mall.dto.ProductUpDownDTO;
import com.yang.mall.entity.Product;
import com.yang.mall.entity.QueryRequest;
import com.yang.mall.vo.ProductDetailVO;
import com.yang.mall.vo.ProductVO;

import java.util.List;

/**
 * <p>
 * 商品库表 服务类
 * </p>
 *
 * @author kadorlin
 * @since 2022-10-21
 */
public interface IProductService extends IService<Product> {

    /**
     * 创建商品
     * @author:kadorlin
     * @date:2022/10/21 13:41
     * @param product
     * @return:void
     **/
    void createOrUpdate(CreateProductDTO product);


    /**
     * 分页查询商品
     * @author:kadorlin
     * @date:2022/10/21 13:41
     * @param productDTO
     * @return:com.baomidou.mybatisplus.core.metadata.IPage<com.yang.mall.vo.ProductVO>
     **/
    IPage<ProductVO> findPage(ProductDTO productDTO);

    /**
     * 删除商品
     * @author:kadorlin
     * @date:2022/10/21 13:41
     * @param productIds
     * @return:void
     **/
    void deleteProductByIds(List<Long> productIds);

    /**
     * 批量查询商品
     * @author:kadorlin
     * @date:2022/10/24 10:31
     * @param productIds
     * @return:java.util.List<com.yang.mall.entity.Product>
     **/
    List<Product> getProductByIds(List<Long> productIds);

    /**
     * 商品详情
     * @author:kadorlin
     * @date:2022/10/21 14:15
     * @param productId
     * @return:com.yang.mall.vo.ProductDetailVO
     **/
    ProductDetailVO detail(Long productId);


    /**
     * 根据条码查询商品详情
     * @author:kadorlin
     * @date:2022/10/24 09:54
     * @param barCode
     * @return:com.yang.mall.vo.ProductDetailVO
     **/
    ProductDetailVO detailByBarCode(String barCode);

    /**
     *
     * @author:kadorlin
     * @date: 17:03
     * @param productDTO
     * @return:java.util.List<com.yang.mall.vo.ProductVO>
     **/
    List<ProductVO> queryList(ProductDTO productDTO);
}
